function f(x,n){
    ans = 1;
    for(let i=0;i<n;i++){
        ans *= x;
    }
    return ans;
}


function g(x,n){
    if(n==0) return 1;
    return x*g(x,n-1);
}


function h(x,n){
    if(n==0) return 1;
    t = h(x,Math.floor(n/2));
    if(n%2==0) return t*t;
    else return t*t*x;
}

function binaryQuickPow(x, n) {
    let result = 1;
    while (n > 0) {
        if (n & 1) {
            result *= x;
        }
        x *= x;
        n >>= 1;
    }
    return result;
}


a = binaryQuickPow(2,3)

console.log(a)